Case<выражение> of



<десятичное_число> => Md (<десятичное_число>, s)

<переменная> => if VARMAP (<переменная>, s) = undef

then error

else VARMAP (<переменная>, s)

<двоичное_выражение> =>

if (Me (<двоичное_выражение>.<выражение_слева>, s) = undef

OR Me (<двоичное_выражение>.< выражение_справа >, s) = undef)

then error

else if (<двоичное_выражение>.< оператор > = '+' then

Me (<двоичное_выражение>.<выражение_слева>, s) +

Me (<двоичное_выражение>.<выражение_справа>, s)

else Me (<двоичное_выражение>.<выражение_слева>, s) ×

Me (<двоичное_выражение>.<выражение_справа>, s).

Оператор присваивания - это вычисление выражения плюс присваивание его значения переменной, находящейся в левой части. Сказанное можно описать следующей функцией:

Ма (х = Е, s) º if Me (E, s) = error

then error

else s' = {< i1', v1' >, < i2', v2' >,..., < in', vn' >} where

for j = 1, 2,..., n, vj' = VARMAP (ij', s) if ij <> x;

Me (E, s) if ij = x.

Отметим, что два сравнения, выполняющиеся в двух последних строках(ij <> x и ij = х), относятся к именам, а не значениям.

После определения полной системы для заданного языка ее можно использовать для определения смысла полных программ этого языка. Это создает основу для очень строгого способа мышления в программировании.

Денотационная семантика может использоваться для разработки языка. Операторы, описать которые с помощью денотационной семантики трудно, могут оказаться сложными и для понимания пользователями языка, и тогда разработчику следует подумать об альтернативной конструкции.

С одной стороны, денотационные описания очень сложны, с другой - они дают великолепный метод краткого описания языка.


Дата добавления: 2015-12-20; просмотров: 7; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!